home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr57 / nwnt.zip / NWNT.EXE / OEMNADND.INF < prev    next >
INI File  |  1993-04-22  |  34KB  |  1,174 lines

  1. ;***********************************************************************
  2. ;
  3. ; OEMNADNC.INF
  4. ;
  5. ;       3Com ODI 3C509 network card SETUP INF file.
  6. ;
  7. ;***********************************************************************
  8.  
  9. ;-----------------------------------------------------------------------
  10. ; OPTION TYPE
  11. ; -----------
  12. ; This identifies the Option type we are dealing with.  The different
  13. ; possible types are:
  14. ;
  15. ; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
  16. ;
  17. ;  Types specific to networking:
  18. ;
  19. ; NetAdapter,        a netcard / adapter combination or just a netcard
  20. ; NetDriver,         just a netcard driver
  21. ; NetTransport,      a complete NDIS-compliant TDI transport stack
  22. ; NetService,        an NT networking service
  23. ; NetWork,           a complete network ensemble.
  24. ; NetProvider        a complete network which supports NT MPR protocol
  25. ;-----------------------------------------------------------------------
  26.  
  27. [Identification]
  28.     OptionType = NetAdapter
  29.  
  30. ;-----------------------------------------------------------------------
  31. ; PlatformsSupported
  32. ; ------------------
  33. ; This identifies the platforms supported by the adapter card.
  34. ; Possible types are:
  35. ;
  36. ; ISA, EISA and MCA
  37. ;-----------------------------------------------------------------------
  38.  
  39. [PlatformsSupported]
  40.     ISA
  41.     EISA
  42.     "Jazz-Internal Bus"
  43.  
  44. ;-----------------------------------------------------------------------
  45. ; OPTION LIST
  46. ; -----------
  47. ; This section lists the OEM Option key names.  These keys are locale
  48. ; independent and used to represent the option in a locale independent
  49. ; manner.
  50. ;
  51. ;-----------------------------------------------------------------------
  52.  
  53. [Options]
  54.     ODI_3C509
  55.  
  56. [LanguagesSupported]
  57.     ENG
  58.  
  59. [OptionsTextENG]
  60.     ODI_3C509     = "ODI 3Com 3C509 Adapter for NetWare"
  61.  
  62. ;***********************************************************************
  63. ; CONSTANTS FOR USING DIALOGS
  64. ;***********************************************************************
  65. [FileConstants]
  66. ;
  67. ;  File names, etc.
  68. ;
  69. UtilityInf      = "UTILITY.INF"
  70. ParamInf        = "NCPARAM.INF"
  71. subroutineinf   = "SUBROUTN.INF"
  72. Exit_Code       = 0
  73. ;ShellCode       = 0
  74.  
  75. ;
  76. ; EventLog Message File
  77. ;
  78. NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
  79. IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
  80.  
  81. ; Product Info
  82. ;
  83. Manufacturer    = "Novell"
  84. ProductMajorVersion     = "0"
  85. ProductMinorVersion     = "9"
  86. ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
  87. ;
  88. ; Hardware
  89. ;
  90. DriverName                   = "ODILOAD"
  91. OdiModules             = "ODI_Modules"
  92. ProductHardwareName          = "3C509"
  93. ProductHardwareODI_3C509Title   = "ODI 3Com 3C509 Adapter for NetWare"
  94. NetRuleHardwareType          = "nw3C509 nwAdapter"
  95. NetRuleHardwareBindForm      = " yes yes container"
  96. ;
  97. ; Registry Key
  98. ;
  99. ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(DriverName)"\CurrentVersion"
  100. ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
  101.  
  102. ;
  103. ;  Dialog Parameters
  104. ;
  105. IRQList   = ^(IRQChoices, 1)
  106. IRQValues = ^(IRQChoices, 2)
  107. IOBaseAddrHexList = ^(IOBaseAddrChoices, 1)
  108. IOBaseAddrDecList = ^(IOBaseAddrChoices, 2)
  109. IOBaseAddrNwList  = ^(IOBaseAddrChoices, 3)
  110. PortIdAddrHexList = ^(PortIdAddrChoices, 1)
  111. PortIdAddrDecList = ^(PortIdAddrChoices, 2)
  112. PortIdAddrNwList  = ^(PortIdAddrChoices, 3)
  113.  
  114. [IRQChoices]
  115. IRQ_0 = "3",3
  116. IRQ_1 = "5",5
  117. IRQ_2 = "7",7
  118. IRQ_3 = "9",9
  119. IRQ_4 = "A",10
  120. IRQ_5 = "B",11
  121. IRQ_6 = "C",12
  122. IRQ_7 = "F",15
  123.  
  124. [IOBaseAddrChoices]
  125. IOBase_1  = "0x200",512,"200"
  126. IOBase_2  = "0x210",528,"210"
  127. IOBase_3  = "0x220",544,"220"
  128. IOBase_4  = "0x230",560,"230"
  129. IOBase_5  = "0x240",576,"240"
  130. IOBase_6  = "0x250",592,"250"
  131. IOBase_7  = "0x260",608,"260"
  132. IOBase_8  = "0x270",624,"270"
  133. IOBase_9  = "0x280",640,"280"
  134. IOBase_10 = "0x290",656,"290"
  135. IOBase_11 = "0x2A0",672,"2A0"
  136. IOBase_12 = "0x2B0",688,"2B0"
  137. IOBase_13 = "0x2C0",704,"2C0"
  138. IOBase_14 = "0x2D0",720,"2D0"
  139. IOBase_15 = "0x2E0",736,"2E0"
  140. IOBase_16 = "0x2F0",752,"2F0"
  141. IOBase_17 = "0x300",768,"300"
  142. IOBase_18 = "0x310",784,"310"
  143. IOBase_19 = "0x320",800,"320"
  144. IOBase_20 = "0x330",816,"330"
  145. IOBase_21 = "0x340",832,"340"
  146. IOBase_22 = "0x350",848,"350"
  147. IOBase_23 = "0x360",864,"360"
  148. IOBase_24 = "0x370",880,"370"
  149. IOBase_25 = "0x380",896,"380"
  150. IOBase_26 = "0x390",912,"390"
  151. IOBase_27 = "0x3A0",928,"3A0"
  152. IOBase_28 = "0x3B0",944,"3B0"
  153. IOBase_29 = "0x3C0",960,"3C0"
  154. IOBase_30 = "0x3D0",976,"3D0"
  155. IOBase_31 = "0x3E0",992,"3E0"
  156.  
  157. [PortIdAddrChoices]
  158. PortId_1  = "0x110",272,"110"
  159. PortId_2  = "0x120",288,"120"
  160. PortId_3  = "0x130",304,"130"
  161. PortId_4  = "0x140",320,"140"
  162. PortId_5  = "0x150",336,"150"
  163. PortId_6  = "0x160",352,"160"
  164. PortId_7  = "0x170",368,"170"
  165. PortId_8  = "0x180",384,"180"
  166. PortId_9  = "0x190",400,"190"
  167. PortId_10 = "0x1A0",416,"1A0"
  168. PortId_11 = "0x1B0",432,"1B0"
  169. PortId_12 = "0x1C0",448,"1C0"
  170. PortId_13 = "0x1D0",464,"1D0"
  171. PortId-14 = "0x1F0",496,"1F0"
  172.  
  173. [DialogConstantsENG]
  174. Help        = "&Help"
  175. Exit        = "Cancel"
  176. OK          = "OK"
  177. HelpContext = ""
  178. Continue    = "Continue"
  179. Cancel      = "Cancel"
  180.  
  181. [FileDependentDlgENG]
  182. DlgType = "Combination"
  183. DlgTemplate = "UBNDIS"
  184. Caption = $(FunctionTitle)
  185. Label1 = "&IRQ Level:"
  186. Label2 = "I/O &Port Address:"
  187. Label3 = "Port Id &Address:"
  188. Combo1List = $(IRQList)
  189. Combo1Out  = $(IRQValue)
  190. Combo2List = $(IOBaseAddrHexList)
  191. Combo2Out  = $(IOBaseAddress)
  192. Combo3List = $(PortIdAddrHexList)
  193. Combo3Out  = $(PortIdAddress)
  194. ComboListItemsIn  = {Combo1List, Combo2List, Combo3List}
  195. ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out}
  196. EditTextIn = ""
  197. EditTextLim = ""
  198. CBOptionsGreyed = {}
  199. NotifyFields = {NO, NO}
  200. HelpContext = $(!IDH_DB_OEMNADN2_INS)
  201.  
  202. [FileConstantsENG]
  203. ProCaption   = "NetWare for Windows NT Setup"
  204. ProCancel    = "Cancel"
  205. ProCancelMsg = "NetWare for Windows NT is not correctly installed.  "+
  206.                "Are you sure you want to cancel copying files?"
  207. ProCancelCap = "Network Setup Message"
  208. ProText1     = "Copying:"
  209. ProText2     = "To:"
  210. FunctionTitle   = "NetWare 3Com 3C509 Network Card Setup"
  211. ProductSoftwareDescription      = "ODI 3Com 3C509 Adapter Driver"
  212. ProductHardwareODI_3C509Description        = "ODI 3Com 3C509 Adapter"
  213.  
  214. [GeneralConstants]
  215. ;
  216. ;  Program flow control variables.
  217. ;
  218. from      = ""
  219. to        = ""
  220. ;
  221. ;  Return codes; Exit_Code is set to one of these
  222. ;
  223. ExitCodeOk     = 0
  224. ExitCodeCancel = 1
  225. ExitCodeFatal  = 2
  226.  
  227. KeyNull         = ""
  228. MAXIMUM_ALLOWED   = 33554432
  229. RegistryErrorIndex = NO_ERROR
  230. KeyProduct      = ""
  231. KeyParameters   = ""
  232.  
  233. TRUE            = 1
  234. FALSE           = 0
  235. NoTitle            = 0
  236.  
  237. ExitState   = "Active"
  238. OldVersionExisted = $(FALSE)
  239.  
  240. DriverPath      = $(!STF_NTPATH)\drivers
  241.  
  242. [date]
  243.     ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
  244.     ; Minute, Second }
  245.     Now = {} ? $(!LIBHANDLE) GetSystemDate
  246.  
  247.  
  248. ;---------------------------------------------------------------------------
  249. ; 1. Identify
  250. ;
  251. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  252. ;                as we are choosing currently.
  253. ;
  254. ; INPUT:         None
  255. ;
  256. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  257. ;                $($R1): Option Type (COMPUTER ...)
  258. ;                $($R2): Diskette description
  259. ;---------------------------------------------------------------------------
  260.  
  261. [Identify]
  262.     ;
  263.     ;
  264.     read-syms Identification
  265.  
  266.     set Status     = STATUS_SUCCESSFUL
  267.     set Identifier = $(OptionType)
  268.     set Media      = #("Source Media Descriptions", 1, 1)
  269.  
  270.     Return $(Status) $(Identifier) $(Media)
  271.  
  272. ;------------------------------------------------------------------------
  273. ; 2. ReturnOptions:
  274. ;
  275. ; DESCRIPTION:   To return the option list supported by this INF and the
  276. ;                localised text list representing the options.
  277. ;
  278. ;
  279. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  280. ;
  281. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  282. ;                                STATUS_NOLANGUAGE
  283. ;                                STATUS_FAILED
  284. ;                                STATUS_NOTSUPPORTED
  285. ;
  286. ;                $($R1): Option List
  287. ;                $($R2): Option Text List
  288. ;------------------------------------------------------------------------
  289.  
  290. [ReturnOptions]
  291.     ;
  292.     ;
  293.     set Status        = STATUS_FAILED
  294.     set OptionList     = {}
  295.     set OptionTextList = {}
  296.  
  297.     ;
  298.     ; Check if the language requested is supported
  299.     ;
  300.     set LanguageList = ^(LanguagesSupported, 1)
  301.     Ifcontains(i) $($0) in $(LanguageList)
  302.         ;
  303.         ; Check if the platforms requested is supported
  304.         ;
  305.         ifstr(i) $($1) == ""
  306.            goto returnoptions
  307.         endif
  308.  
  309.         set PlatformList = ^(PlatformsSupported, 1)
  310.         Ifcontains(i) $($1) in $(PlatformList)
  311.            goto returnoptions
  312.         else
  313.            set Status = STATUS_NOTSUPPORTED
  314.            goto finish_ReturnOptions
  315.         endif
  316.     else
  317.         set Status = STATUS_NOLANGUAGE
  318.         goto finish_ReturnOptions
  319.     endif
  320.  
  321.     ;
  322.     ; form a list of all the options and another of the text representing
  323.     ;
  324.  
  325. returnoptions = +
  326.     set OptionList     = ^(Options, 1)
  327.     set OptionTextList = ^(OptionsText$($0), 1)
  328.     set Status         = STATUS_SUCCESSFUL
  329.  
  330. finish_ReturnOptions = +
  331.     Return $(Status) $(OptionList) $(OptionTextList)
  332.  
  333. ;----------InstallOption-------------------------------------------------
  334. ;
  335. ; InstallOption:
  336. ;
  337. ;      This section is shelled to by main installation processing
  338. ;      or by NCPASHEL.INF during reconfig, removal, update, etc.
  339. ;
  340. ;
  341. ; FUNCTION:  To copy files representing Options
  342. ;            To configure the installed option
  343. ;            To update the registry for the installed option
  344. ;
  345. ; INPUT:     $($0):  Language to use
  346. ;            $($1):  OptionID to install
  347. ;            $($2):  SourceDirectory
  348. ;            $($3):  AddCopy  (YES | NO)
  349. ;            $($4):  DoCopy   (YES | NO)
  350. ;            $($5):  DoConfig (YES | NO)
  351. ;
  352. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  353. ;                            STATUS_NOLANGUAGE |
  354. ;                            STATUS_USERCANCEL |
  355. ;                            STATUS_FAILED
  356. ;
  357. ;------------------------------------------------------------------------
  358. [InstallOption]
  359.     ;
  360.     ; extract parameters
  361.     ;
  362.     set Option   = $($1)
  363.     set SrcDir   = $($2)
  364.     set AddCopy  = $($3)
  365.     set DoCopy   = $($4)
  366.     set DoConfig = $($5)
  367.  
  368.     ;
  369.     ; Check if the language requested is supported
  370.     ;
  371.     set LanguageList = ^(LanguagesSupported, 1)
  372.     Ifcontains(i) $($0) NOT-IN $(LanguageList)
  373.         Return STATUS_NOLANGUAGE
  374.     endif
  375.     Debug-Output "OEMNADTK.INF: STF_CWDIR is: "$(!STF_CWDIR)
  376.  
  377.     ; define all the constants
  378.  
  379.     set-subst LF = "\n"
  380.  
  381.     read-syms GeneralConstants
  382.     read-syms FileConstants
  383.  
  384.     read-syms DialogConstants$(!STF_LANGUAGE)
  385.     ifstr(i) $(!NTN_Origination) == "NCPA"
  386.         set Continue = "OK"
  387.     endif
  388.     read-syms FileConstants$(!STF_LANGUAGE)
  389.  
  390.     detect date
  391.  
  392.     set-title  $(FunctionTitle)
  393.  
  394.     set to   = Begin
  395.     set from = Begin
  396. ;
  397. ;  Assume all is well.
  398. ;
  399.     set CommonStatus = STATUS_SUCCESSFUL
  400.  
  401.     EndWait
  402.  
  403. ;
  404. ;   Set up the operation-mode-based variables and gaily welcome
  405. ;   the user.  If the "install mode" variable is improperly set,
  406. ;   assume this is a new installation.
  407. ;
  408.  
  409. Begin = +
  410.  
  411.     Ifstr(i) $(!NTN_InstallMode) == deinstall
  412.                 set StartLabel = removeadapter
  413.     else-Ifstr(i) $(!NTN_InstallMode) == Update
  414.                 set StartLabel = UpgradeSoftware
  415.     else-Ifstr(i) $(!NTN_InstallMode) == bind
  416.                 set StartLabel = bindingadapter
  417.     else-Ifstr(i) $(!NTN_InstallMode) == configure
  418.                 set StartLabel = configureadapter
  419.     else
  420.                 set StartLabel = installadapter
  421.                 set OEM_ABANDON_OPTIONS = {}
  422.                 set OEM_ABANDON_SOFTWARE = FALSE
  423.                 set OEM_ABANDON_ON = TRUE
  424.     endif
  425.  
  426.  
  427.     Set IRQValue = *($(IRQList),1)
  428.     Set IOBaseAddrValue = *($(IOBaseAddrDecList),17)
  429.     Set PortIdAddrValue = *($(PortIdAddrDecList),1)
  430.  
  431.     set from = $(fatal)
  432.     set to = $(fatal)
  433.     goto $(StartLabel)
  434.  
  435. ;-----------------------------------------------
  436. ; Installation Section
  437. ;-----------------------------------------------
  438.  
  439. installadapter = +
  440.  
  441.     goto adapteroptions
  442.  
  443.  
  444. ;-----------------------------------------------
  445. ; Configuration Section
  446. ;-----------------------------------------------
  447. ;
  448. ;   Get the current values of all the parameters
  449. ;
  450. configureadapter = +
  451.     Ifstr $(KeyProduct) == $(KeyNull)
  452.         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
  453.         Ifstr $(KeyProduct) == $(KeyNull)
  454.             set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  455.             Debug-Output "Cannot find component product key"
  456.             goto fatalregistry
  457.         Endif
  458.     Endif
  459.  
  460.     Set AdapterNumber = ""
  461.  
  462.     ;
  463.     ; Get the other parameters;  they're attached to the service parameters key
  464.     ;
  465.     Debug-Output "OEMNADNX.INF: Shelling to FindService"
  466.     Shell $(UtilityInf) FindService, $(KeyProduct)
  467.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  468.         Debug-Output "OEMNADNX.INF: FindService shell failure"
  469.         Goto ShellCodeError
  470.     Endif
  471.     Ifstr(i) $($R0) != NO_ERROR
  472.         Debug-Output "OEMNADNX.INF: FindService Shell error: "$($R0)
  473.         Goto fatalregistry
  474.     endif
  475.  
  476.     set KeyParameters = $($R2)
  477.  
  478.     ;
  479.     ;  We don't need the services key, so close it.
  480.     ;
  481.     CloseRegKey $($R1)
  482.  
  483.     Ifstr $(KeyParameters) == $(KeyNull)
  484.         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  485.         Debug-Output "Cannot find component service"
  486.         goto fatalregistry
  487.     endif
  488.  
  489.     set OldVersionExisted = $(TRUE)
  490.  
  491.     set ValueName = ""
  492.     set ValueData = ""
  493.     set ValueStr  = ""
  494.     set ValueList = {}
  495.  
  496.     ;
  497.     ; Get the old values
  498.     ;
  499.     EnumRegValue $(KeyParameters) ValueList
  500.  
  501.     ForListDo $(ValueList)
  502.  
  503.         set ValueItem = $($)
  504.         set ValueName = *($(ValueItem),1)
  505.         set ValueData = *($(ValueItem),4)
  506.         Ifstr(i) $(ValueName) == "InterruptNumber"
  507.             set IRQValue = $(ValueData)
  508.         else-ifstr(i) $(ValueName) == "IoBaseAddress"
  509.             set IOBaseAddrValue = $(ValueData)
  510.         else-ifstr(i) $(ValueName) == "PortIdAddress"
  511.             set PortIdAddrValue = $(ValueData)
  512.         endif
  513.  
  514.     EndForListDo
  515.  
  516.     ifstr(i) $(IRQValue) == ""
  517.         set IRQValue = *($(IRQList), 1)
  518.     endif
  519.  
  520.     ifstr(i) $(IOBaseAddrValue) == ""
  521.         set IOBaseAddrValue = *($(IOBaseAddrDecList), 17)
  522.     endif
  523.  
  524.     ifstr(i) $(PortIdAddrValue) == ""
  525.         set PortIdAddrValue = *($(PortIdAddrDecList), 1)
  526.     endif
  527. ;
  528. ;  Read the symbolic link to the ODI entry from the "OdiLoadName" value
  529. ;
  530.     GetRegValue $(KeyParameters),"OdiLoadName", CardInstanceList
  531.     Set CardInstanceName = *($(CardInstanceList),4)
  532.  
  533. adaptersetup =+
  534.  
  535.     goto adapteroptions
  536. ;
  537. ;   Let the user bang on the options until satisfied.
  538. ;
  539. adapteroptions = +
  540.     set from = adapteroptions
  541.  
  542.     set IOBaseAddress = *($(IOBaseAddrHexList), ~($(IOBaseAddrDecList), +
  543.         $(IOBaseAddrValue)))
  544.     set PortIdAddress = *($(PortIdAddrHexList), ~($(PortIdAddrDecList), +
  545.         $(PortIdAddrValue)))
  546.  
  547.     read-syms FileDependentDlg$(!STF_LANGUAGE)
  548.  
  549.     ui start "InputDlg"
  550.  
  551.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  552.         set IRQValue = $(Combo1Out)
  553.         set IOBaseAddress = $(Combo2Out)
  554.         set PortIoAddress = $(Combo3Out)
  555.         ui pop 1
  556.     else-ifstr(i) $(DLGEVENT) == "BACK"
  557.         set CommonStatus = STATUS_USERCANCEL
  558.         Debug-Output "Action: exit. Bye."
  559.         ui pop 1
  560.         goto end
  561.     else
  562.         ;
  563.         ; Unknow command
  564.         ;
  565.         ui pop 1
  566.         Debug-Output "Action: unknown. Bye."
  567.         goto end
  568.     endif
  569.  
  570.     set IOBaseAddrValue = *($(IOBaseAddrDecList), +
  571.          ~($(IOBaseAddrHexList),$(IOBaseAddress)))
  572.     set PortIdAddrValue = *($(PortIdAddrDecList), +
  573.          ~($(PortIdAddrHexList),$(PortIdAddress)))
  574. ;
  575. ;   If installing, go create the necessary keys;
  576. ;   if configuring, they're already open.
  577. ;
  578.     ifint $(OldVersionExisted) == $(TRUE)
  579.         ifstr(i) $(!NTN_InstallMode) == configure
  580.             goto writeparameters
  581.         endif
  582.     endif
  583.  
  584.     StartWait
  585. ;
  586. ;   Create the HARDWARE\Netcard region and its corresponding service
  587. ;
  588.     Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
  589.  
  590.  
  591.     ifint $($R4) != -1
  592.         Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
  593.     endif
  594.  
  595.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  596.         Debug-Output "Cannot add hardware component"
  597.         goto ShellCodeError
  598.     endif
  599.  
  600.     set RegistryErrorIndex = $($R0)
  601.  
  602.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  603.         EndWait
  604.         Debug-Output "Registry error: add hardware component"
  605.         CloseRegKey $($R1)
  606.         CloseRegKey $($R2)
  607.         CloseRegKey $($R3)
  608.         goto fatalregistry
  609.     endif
  610.  
  611. ;
  612. ;   At this point:
  613. ;     $R1  Registry key variable for HARDWARE\Netcard\(n)
  614. ;     $R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
  615. ;     $R3  Registry key handle for <service>\Parameters key
  616. ;     $R4  Adapter number assigned to adapter
  617. ;     $R5  Service name generated by combining svc name with adapter number
  618. ;
  619.     set KeyParameters = $($R3)
  620.     set KeyAdapterRules = $($R2)
  621.     set AdapterNumber = $($R4)
  622.  
  623.     Set-add TempAdapterNumber = $(AdapterNumber),0
  624.  
  625.     set CardInstanceName = $(ProductHardwareName)" #"$(TempAdapterNumber)
  626.  
  627.     set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
  628.                        {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
  629.                        {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
  630.                        {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
  631.                        {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
  632.                        {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  633.  
  634.     Debug-Output "AddValueList: $R1 = "$($R1)
  635.     Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
  636.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  637.         Debug-Output "ShellCode error"
  638.         goto ShellCodeError
  639.     endif
  640.  
  641.     CloseRegKey $($R1)
  642.  
  643.     set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
  644.     set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
  645.  
  646.     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
  647.                         {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
  648.                         {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  649.  
  650.     Debug-Output "AddValueList: KeyAdapterRules = "$(KeyAdapterRules)
  651.     Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
  652.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  653.         Debug-Output "ShellCode error."
  654.         goto ShellCodeError
  655.     endif
  656.  
  657.     set RegistryErrorIndex = $($R0)
  658.  
  659.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  660.         EndWait
  661.         Debug-Output "Resgitry error: add value list."
  662.         CloseRegKey $(KeyParameters)
  663.         CloseRegKey $(KeyAdapterRules)
  664.         goto fatalregistry
  665.     endif
  666.  
  667.     CloseRegKey $(KeyAdapterRules)
  668.  
  669.     SetRegValue $(KeyParameters) {OdiLoadName,$(NoTitle),$(!REG_VT_SZ),$(CardInstanceName)}
  670.  
  671.     goto writeparameters
  672. ;
  673. ;   REQUIRED:   $(KeyParameters) contains service Parameters key handle
  674. ;
  675. writeparameters = +
  676.     Shell $(UtilityInf), GetBusTypeNum
  677.     set BusTypeNum = $($R1)
  678.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  679.         Debug-Output "ShellCode error."
  680.         goto ShellCodeError
  681.     endif
  682. ;
  683. ;   Add the rest of the parameters to the Services area
  684. ;
  685.     set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
  686.                        {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
  687.                        {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
  688.                        {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
  689.                        {PortIdAddress,$(NoTitle),$(!REG_VT_DWORD),$(PortIdAddrValue)}}
  690.  
  691.     Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
  692.  
  693.     CloseRegKey $(KeyParameters)
  694.  
  695.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  696.         Debug-Output "ShellCode error."
  697.         goto ShellCodeError
  698.     endif
  699.  
  700.     set RegistryErrorIndex = $($R0)
  701.  
  702.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  703.         Debug-Output "Registry error: Add value list"
  704.         goto fatalregistry
  705.     endif
  706.  
  707. ;
  708. ;  TRAVIS: Put the ODILOAD update info here!
  709. ;
  710.     Debug-Output "Add ODILOAD Parameters"
  711.  
  712.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\OdiLoad" $(MAXIMUM_ALLOWED) KeyOdiLoad
  713.     Ifstr $(KeyOdiLoad) == $(KeyNull)
  714.         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  715.         Debug-Output "Cannot find OdiLoad "
  716.         goto fatalregistry
  717.     Endif
  718.  
  719.     Set KeyOdiCard = $(KeyNull)
  720.     Debug-Output "CardInstanceName = "$(CardInstanceName)
  721.  
  722.     set CloseOdiModules = ""
  723.  
  724.     Ifstr(i) $(AdapterNumber) != ""
  725.         ;  This adapter was just installed; allow creation of the #nn key
  726.     CreateRegKey $(KeyOdiLoad) {$(OdiModules),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyOdiModules
  727.     Ifstr(i) $(KeyOdiModules) == $(KeyNull)
  728.         OpenRegKey $(KeyOdiLoad) "" $(OdiModules) $(MAXIMUM_ALLOWED) KeyOdiModules
  729.         Ifstr(i) $(KeyOdiLoad) == $(KeyNull)
  730.             set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  731.         Debug-Output "Cannot find OdiLoad\"$(OdiModules)
  732.             goto fatalregistry
  733.         Endif
  734.     Endif
  735.     set CloseOdiModules = "1"
  736.         CreateRegKey $(KeyOdiModules) {$(CardInstanceName),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyOdiCard
  737.     Endif
  738.  
  739.     Ifstr(i) $(KeyOdiCard) == $(KeyNull)
  740.         ;
  741.         ;  This is either an old card, or a prior version of the key existed.
  742.         ;
  743.     OpenRegKey $(KeyOdiLoad) "" $(OdiModules)"\"$(CardInstanceName) $(MAXIMUM_ALLOWED) KeyOdiCard
  744.     Ifstr(i) $(KeyOdiCard) == $(KeyNull)
  745.             set RegistryErrorIndex = CANNOT_FIND_COMPONEXT_SERVICE
  746.         Debug-Output "Can't create ODILOAD\"$(CardInstanceName)
  747.         goto fatalresistry
  748.     Endif
  749.     Endif
  750.  
  751.     set IOBaseAddressNw = *($(IOBaseAddrNwList), ~($(IOBaseAddrHexList),+
  752.         $(IOBaseAddress)))
  753.  
  754.     set PortIdAddressNw = *($(PortIdAddrNwList), ~($(PortIdAddrHexList),+
  755.         $(PortIdAddress)))
  756.  
  757.     Debug-Output "OEMNADND.INF: IOBaseAddressNw = "$(IOBaseAddressNw)
  758.     Debug-Output "OEMNADND.INF: PortIdAddressNw = "$(PortIdAddressNw)
  759.  
  760.     set OdiParmList = {"Frame ETHERNET_802.3", +
  761.                "Frame ETHERNET_802.2", +
  762.                "Frame ETHERNET_II", +
  763.                "Frame ETHERNET_SNAP", +
  764.                "Port "$(IOBaseAddressNw), +
  765.                "Int "$(IRQValue), +
  766.                "PortId "$(PortIdAddressNw)}
  767.     SetRegValue $(KeyOdiCard) {"Parameters",$(NoTitle),$(!REG_VT_MULTI_SZ),$(OdiParmList)}
  768.  
  769.     CloseRegKey $(KeyOdiLoad)
  770.     Ifstr(i) $(CloseOdiModules) != $(KeyNull)
  771.         CloseRegKey $(KeyOdiModules)
  772.     Endif
  773.     CloseRegKey $(KeyOdiCard)
  774.  
  775. ;
  776. ; Update the card name in IpxSpxII to be the last card installed
  777. ;
  778.     set IpxParameters = $(!NTN_ServiceBase)"\IpxSpxII\Parameters"
  779.     OpenRegKey $(!REG_H_LOCAL) "" $(IpxParameters) $(MAXIMUM_ALLOWED) KeyIpxParameters
  780.     Ifstr(i) $(KeyIpxParameters) == ""
  781.         Debug-Output "OEMNADNC.INF: Can't update IpxSpxII CardName"
  782.     Else
  783.         Split-String $(CardInstanceName) " " CardNameParts
  784.     set CardNameBase = *($(CardNameParts),1)
  785.         SetRegValue $(KeyIpxParameters) {"CardName",$(NoTitle),$(!REG_VT_SZ),$(CardNameBase)}
  786.     CloseRegKey $(KeyIpxParameters)
  787.     Endif
  788.  
  789.     goto successful
  790.  
  791. ;-----------------------------------------------
  792. ; Binding section
  793. ;-----------------------------------------------
  794. bindingadapter =+
  795.     set Error = "Binding: Sorry, not yet implemented."
  796.     goto fatal
  797.  
  798. ;-----------------------------------------------
  799. ; Removeadapter section
  800. ;-----------------------------------------------
  801.  
  802. removeadapter = +
  803.  
  804. ;
  805. ;  TRAVIS: Put the ODILOAD adapter removal stuff here!
  806. ;
  807.  
  808. ;
  809. ; Delete the Services\OdiLoad\Odi_Modules\xxxxxx #01 card instance.
  810. ;
  811.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyParameters
  812.     Ifstr(i) $(KeyParameters) == ""
  813.  
  814.         Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(!NTN_RegBase)
  815.  
  816.     Else
  817.  
  818.         GetRegValue $(KeyParameters),"ServiceName", ServiceNameList
  819.         Set ServiceName = *($(ServiceNameList),4)
  820.         CloseRegKey $(KeyParameters)
  821.  
  822.  
  823.         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName)"\Parameters" $(MAXIMUM_ALLOWED) KeyService
  824.     ifstr(i) $(KeyService) == ""
  825.  
  826.         Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(ServiceName)
  827.  
  828.     Else
  829.         GetRegValue $(KeyService),"OdiLoadName", CardInstanceList
  830.         Set CardInstanceName = *($(CardInstanceList),4)
  831.         CloseRegKey $(KeyService)
  832.  
  833.         Set OdiModuleName = $(!NTN_ServiceBase)"\"$(DriverName)"\"$(OdiModules)
  834.             OpenRegKey $(!REG_H_LOCAL) "" $(OdiModuleName) $(MAXIMUM_ALLOWED) KeyOdiModules
  835.             Ifstr(i) $(KeyOdiModules) == ""
  836.  
  837.                 Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(OdiModulesName)
  838.  
  839.             Else
  840.                 Debug-Output "OEMNADNC.INF: Deleting card "$(CardInstanceName)
  841.         Debug-Output "OEMNADNC.INF: From Key "$(OdiModuleName)
  842.  
  843.                 DeleteRegTree $(KeyOdiModules) $(CardInstanceName)
  844.  
  845.         FlushRegKey $(KeyOdiModules)
  846.         CloseRegKey $(KeyOdiModules)
  847.  
  848.             Endif
  849.     Endif
  850.  
  851.     Endif
  852.  
  853. ;
  854. ; Increment the OdiLoad reference count so OdiLoad is not removed as a
  855. ; service.
  856. ;
  857.  
  858.     Shell $(UtilityInf), IncrementRefCount, $(ProductKeyName)
  859.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  860.         Debug-Output "ShellCode error removeadapter"
  861.         goto ShellCodeError
  862.     Endif
  863.  
  864.     set RegistryErrorIndex = $($R0)
  865.  
  866.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  867.         goto fatalregistry
  868.     Endif
  869.  
  870.     Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  871.             $(DriverName), $(!NTN_RegBase)
  872.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  873.         Debug-Output "ShellCode error"
  874.         goto ShellCodeError
  875.     endif
  876.  
  877.     set RegistryErrorIndex = $($R0)
  878.  
  879.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  880.         goto fatalregistry
  881.     endif
  882.  
  883. ; Decrement the reference count so OdiLoad can be removed when all the
  884. ; ODI adapters have been removed.
  885. ;
  886.     Shell $(UtilityInf), DecrementRefCount, $(ProductKeyName)
  887.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  888.         Debug-Output "ShellCode error removeadapter"
  889.         goto ShellCodeError
  890.     Endif
  891.  
  892.     set RegistryErrorIndex = $($R0)
  893.  
  894.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  895.         goto fatalregistry
  896.     Endif
  897.  
  898.     goto end
  899.  
  900. ;-----------------------------------------------
  901. ; Upgrade Software section
  902. ;-----------------------------------------------
  903.  
  904. UpgradeSoftware = +
  905.     ;
  906.     ; upgrade/update hardware component
  907.     ; There is no different between upgrade and update for hardware
  908.     ; component
  909.     ;
  910.     ; 1. Get the Service Name
  911.     ; 2. Change the NetRule section if necessary
  912.     ;
  913.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
  914.           $(MAXIMUM_ALLOWED) NetworkCardKey
  915.     Ifstr(i) $(NetworkCardKey) != $(KeyNull)
  916.         ;
  917.         ; Get Service name
  918.         ;
  919.         GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
  920.         set ServiceName = *($(ServiceNameInfo), 4)
  921.  
  922.         ;
  923.         ; Change the NetRule if necessary
  924.         ;
  925.         OpenRegKey $(NetworkCardKey) "" "NetRules" +
  926.             $(MAXIMUM_ALLOWED) NetRuleKey
  927.         Ifstr(i) $(NetRuleKey) != $(KeyNull)
  928.             ;
  929.             ; Make the change....
  930.             ;
  931.         else
  932.             ;
  933.             ; Error, cannot open net rules key
  934.             ;
  935.             goto fatalregistry
  936.         endif
  937.  
  938.         CloseRegKey $(NetRules)
  939.         CloseRegKey $(NetworkCardKey)
  940.     else
  941.         ;
  942.         ; Error, cannot open network card key
  943.         ;
  944.         goto fatalregistry
  945.     endif
  946.     ;
  947.     ; 3. Change the service section of the hardware. i.e.,
  948.     ;    ParameterName change, value change, etc.
  949.     ;
  950.     OpenRegKey $(!REG_H_LOCAL) "" +
  951.           $(!NTN_ServiceBase)"\"$(ServiceName) +
  952.           $(MAXIMUM_ALLOWED) ServiceKey
  953.  
  954.     Ifstr(i) $(ServiceKey) != $(KeyNull)
  955.         ;
  956.         ; Get the ServiceKey to change the Start value
  957.         ; or Type value. Or open Parameters key to
  958.         ; change the hardware parameters if necessary.
  959.         ;
  960.         CloseRegKey $(ServiceKey)
  961.     else
  962.         ;
  963.         ; Error, cannot open network card key
  964.         ;
  965.         goto fatalregistry
  966.     endif
  967.  
  968.     goto end
  969.     ;
  970.     ; End of Upgrade Software
  971.     ;
  972.  
  973. ;
  974. ;  Escape hatches
  975. ;
  976. successful = +
  977.     goto end
  978.  
  979. abandon = +
  980.     ForListDo $(OEM_ABANDON_OPTIONS)
  981.         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  982.             $(DriverName), $($)
  983.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  984.             Debug-Output "ShellCode error"
  985.             goto ShellCodeError
  986.         endif
  987.  
  988.         set RegistryErrorIndex = $($R0)
  989.  
  990.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  991.             goto fatalregistry
  992.         endif
  993.     EndForListDo
  994.  
  995.     goto end
  996.  
  997. ;
  998. ; warning display
  999. ;
  1000. warning = +
  1001.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  1002.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1003.         goto ShellCodeError
  1004.     endif
  1005.     ifstr(i) $($R1) == "OK"
  1006.         goto $(to)
  1007.     else-ifstr(i) $($R1) == "CANCEL"
  1008.         goto $(from)
  1009.     else
  1010.         goto "end"
  1011.     endif
  1012.  
  1013.  
  1014. ;
  1015. ; non fatal error display
  1016. ;
  1017. nonfatalinfo = +
  1018.     Set CommonStatus = STATUS_USERCANCEL
  1019.     Set Severity = STATUS
  1020.     goto nonfatalmsg
  1021. nonfatal = +
  1022.     Set Severity = NONFATAL
  1023.     goto nonfatalmsg
  1024. nonfatalmsg = +
  1025.     ifstr(i) $(Error) == ""
  1026.         Set Severity = NONFATAL
  1027.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  1028.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1029.             goto ShellCodeError
  1030.         endif
  1031.         set Error = $($R0)
  1032.     endif
  1033.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
  1034.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1035.         goto ShellCodeError
  1036.     endif
  1037.     ifstr(i) $($R1) == "OK"
  1038.         goto $(from)
  1039.     else
  1040.         goto "end"
  1041.     endif
  1042.  
  1043. ;
  1044. ;  Registry is broken
  1045. ;
  1046. fatalregistry = +
  1047.     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
  1048.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1049.         goto ShellCodeError
  1050.     endif
  1051.     set Error = $($R0)
  1052.     goto fatal
  1053.  
  1054. fataldetect = +
  1055.     Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
  1056.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1057.         Debug-Output "ShellCode error: cannot get an error string."
  1058.         goto ShellCodeError
  1059.     endif
  1060.     set Error = $($R0)
  1061.     Goto fatal
  1062. ;
  1063. ; fatal error display
  1064. ;
  1065. fatal = +
  1066.     ifstr(i) $(Error) == ""
  1067.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  1068.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1069.             goto ShellCodeError
  1070.         endif
  1071.         set Error = $($R0)
  1072.     endif
  1073.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  1074.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1075.         goto ShellCodeError
  1076.     endif
  1077.  
  1078.     goto setfailed
  1079.  
  1080. ;
  1081. ;  Shelling error
  1082. ;
  1083. ShellCodeError = +
  1084.     set DlgType      = "MessageBox"
  1085.     set STF_MB_TITLE = "Error: "$(FunctionTitle)
  1086.     set STF_MB_TEXT  = "Shell Code Error"
  1087.     set STF_MB_TYPE  = 1
  1088.     set STF_MB_ICON  = 3
  1089.     set STF_MB_DEF   = 1
  1090.     ui start "Error Message"
  1091.     goto setfailed
  1092.  
  1093. setfailed = +
  1094.     set CommonStatus = STATUS_FAILED
  1095.     ;
  1096.     ; if OEM_ABANDON_ON == TRUE, then remove the registry entries
  1097.     ;
  1098.     ifstr(i) $(OEM_ABANDON_ON) == TRUE
  1099.         set OEM_ABANDON_ON = FALSE
  1100.         goto abandon
  1101.     endif
  1102.     goto end
  1103.  
  1104. end = +
  1105.     goto term
  1106.  
  1107. term = +
  1108.  
  1109.     Return $(CommonStatus)
  1110.  
  1111. ;***************************************************************
  1112. ;  INSTALL SECTIONS
  1113. ;***************************************************************
  1114. [Install-Option]
  1115.     set STF_VITAL = ""
  1116.  
  1117.     ifstr(i) $(AddCopy) == "YES"
  1118.  
  1119.         ;
  1120.         ; Add the files to the copy list
  1121.         ;
  1122.         AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1123.  
  1124.     endif
  1125.  
  1126.     ifstr(i) $(DoCopy) == "YES"
  1127.  
  1128.        ;
  1129.        ; Copy files in the copy list
  1130.        ;
  1131.        set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1132.        CopyFilesInCopyList
  1133.  
  1134.     endif
  1135.  
  1136.     ifstr(i) $(DoConfig) == "YES"
  1137.         ;
  1138.         ; Add product to registry
  1139.         ;
  1140.  
  1141.         ;
  1142.         ; Finish up
  1143.     endif
  1144.  
  1145.     Exit
  1146.  
  1147. [Install-Update]
  1148.    set STF_VITAL        = ""
  1149.    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
  1150.    ;set STF_VERSION     = "YES"
  1151.  
  1152.    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1153.    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
  1154.  
  1155.    set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1156.    CopyFilesInCopyList
  1157.  
  1158.    exit
  1159.  
  1160. [Source Media Descriptions]
  1161.     1  = "NetWare for Windows NT Setup Disk"  , TAGFILE = 3C509.lan
  1162.     2  = "NetWare for Windows NT Setup Disk"  , TAGFILE = 3C509.lan
  1163.     99    = "LMHOST disk", TAGFILE = lmhosts
  1164. [ProductType]
  1165. STF_PRODUCT  = Winnt
  1166. STF_PLATFORM = I386
  1167. [Files-Inf]
  1168. 2,    oemnadnd.inf,     SIZE=1000,    RENAME=$(!UG_Filename)
  1169. [Files-ODI_3C509]
  1170. 2,3C509.lan , SIZE=20000
  1171.  
  1172.  
  1173.  
  1174.